<!-- 






 -->
<script>
// Promise.all()全部，所有的promise都成功，返回值是promise实例的状态
// Promise.all([])返回的是[];结果是成功
    function delay(ms) {
      return new Promise(function (resolve) {
        setTimeout(() => resolve(), ms)
      })
    }
    const begin=Date.now()//开始时间
    const p1=delay(1000).then(()=>{
      console.log('p1完成',Date.now()-begin)
      // return 'a'
      throw 'a'
    })
    const p2=delay(2000).then(()=>{
      console.log('p2完成',Date.now()-begin)
      return 'b'
      // throw 'b'
    })
    const p3=delay(1500).then(()=>{
      console.log('p3完成',Date.now()-begin)
      // return 'c'
      throw 'c'
    })
    // const p4=new Promise(()=>{})//结果是pending，永远不会完成
// const all=Promise.all([p1,p2,p3,Promise.resolve({name:'张三'})]).then((results)=>{
//   console.log('all完成',results,Date.now()-begin);
// })
// 失败
// .catch(e=>console.log('all失败',e,Date.now()-begin))



// Promise.race()返回Promise实例的状态
// Promise.race()-->结果是pending
// 成功/失败由最快状态改变的promise决定成功或失败

// const race=Promise.race([p1,p2,p3]).then((results)=>{
//   console.log('race完成',results,Date.now()-begin);
// })
// .catch(e=>console.log('race失败',e,Date.now()-begin))


/* 
[].every所有条件true，返回true，任何一个返回false，返回false
[].some任何一个返回true，返回true，所有条件false，返回false
Promise.any()任何一个promise成功，返回成功promise，所有promise失效，返回失败的promise
成功最快的h时间，失败最慢的时间
Promise.any([])-->失败

*/

// const any=Promise.any([p1,p2,p3]).then((results)=>{

//   console.log('any完成',results,Date.now()-begin);
// })

// .catch(e=>console.log('any失败',e,Date.now()-begin))

/*
Promise.allSettled()全部搞定，返回值是promise实例的状态
Promise.allSettled([])-->成功
成功：
-数组中所有promise都改变状态
-成功值是所有promise聚合值
-成功最慢的改变状态promise花的时间

*/ 
const allSettled=Promise.allSettled([p1,p2,p3]).then((results)=>{

console.log('allSettled完成',results,Date.now()-begin);
})

.catch(e=>console.log('allSettled失败',e,Date.now()-begin))

</script>














  <!-- <script>

Promise.myResolve=function(v){
    return new Promise((resolve)=>resolve(v))
}

console.log(1)
Promise.resolve().then(()=>console.log(3))
console.log(2);

[1,2,'b'].map(v=>Promise.resolve(v))




  </script> -->